查看原文
其他

Nginx编译安装优化

运维实谈 运维研习社 2022-11-05

        nginx,作为一个自由的、开源的web服务器,由于其高并发、反向代理、扩展丰富、资源占用少等特点,有越来越多的用户开始使用。nginx相对apache来说,相同环境配置下的并发请求量大概是6-10倍的样子,而内存、CPU消耗为1/5、1/10,一个nginx进程差不多15M内存左右,所以对于一个运维人来说,nginx安装是必须会的。

        nginx安装有两种访问,一种是利用包管理器直接安装,也是新手最简单的安装方式,另一种是源码包编译安装。源码包编译安装的有点就是灵活,扩展方便,且据说性能要比直接包管理器安装要好,对于很多人说的包管理器安装无法安装最新版、无法升级到最新版等问题,纯属扯淡,不存在,只要你能找到一个好的源。但是今天主要讲编译安装nginx的一些方法。网上有很多编译安装教程,也有一键安装包,这里不再长篇大论的描述nginx整个编译安装的步骤,只说几个编译安装的小方法。

        本文全部以nginx最新版本1.13.8为例。


修改软件名及版本号


        正常情况下,我们在请求某个网站或应用是,可以在返回的数据包头部,看到web服务的信息,包括web名称,版本号等信息,这些信息的暴露,会直接影响到网站以及服务器的安全,所以需要在编译的时候,修改或隐藏掉服务及版本信息

  • 修改方法:

[root@localhost nginx-1.13.8]# vim src/core/nginx.h +13

修改上图NGINX_VERSION为你想设置的版本号,修改NGINX_VER为你想要显示的web名称

[root@localhost nginx-1.13.8]# vim src/http/ngx_http_header_filter_module.c +49

修改上图nginx处,改成想要在HTTP头信息中回显的web名称

[root@localhost nginx-1.13.8]# vim src/http/ngx_http_special_response.c +22

修改上图NGINX_VER处,这里是http错误码的返回。


Tcmalloc


        Tcmalloc是google开发的,与标准的glibc库和malloc相比,它在内存分配上效率和速度要更高,它主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损失,并且有效的控制内存碎片。

        在64位系统上需要先安装libunwind

[root@localhost src]# wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.2.tar.gz

[root@localhost src]# tar -zxvf libunwind-1.2.tar.gz

[root@localhost src]# cd libunwind-1.2

[root@localhost libunwind-1.2]# ./configure

[root@localhost libunwind-1.2]# make && make install

        下载安装Tcmanlloc

[root@localhost src]# git clone https://github.com/gperftools/gperftools.git

[root@localhost gperftools]# ./autogen.sh

[root@localhost gperftools]# ./configure

[root@localhost gperftools]# make && make install

[root@localhost gperftools]# echo "/usr/local/lib" >> /etc/ld.so.conf

[root@localhost gperftools]# ldconfig

        安装好之后,编译nginx的时候添加google_perftools_module

--with-google_preftools_module

安装完nginx后,在nginx主配置文件中添加

google_preftools_profiles    /path/to/profile;

为gperftools创建线程目录

        mkdir /tmp/tcmalloc

        chmod 0777 /tmp/tcmalloc

上面的/path/to/profile改为/tmp/tcmallow,启动nginx,并用lsof命令查看tcmalloc是否正常加载


减小可执行文件


        默认的nginx编译选项里使用debug模式的,会插入很多不必要的内容,编译以后文件有好几兆,所以这里去掉nginx的debug模式编译,完成后可执行文件只有几百K。

[root@localhost nginx-1.13.8]# vim auto/cc/gcc +172

如同注释掉图上的一行,重新编译。

如图,编译后只有880K。






        欢迎分享和关注,运维实谈,不定期分享纯干货!


往期精彩回顾






【环境配置】如何建立你的HTTPS站点

【开源技术】浅谈Rabbi    tmq

【环境配置】趣玩nginx——限速

【硬件配置】Matrix RAID

【运维开发】运维必备服务器分析shell

【nginx优化】使用socket方式链接Nginx优化php-fpm性能

【开源技术】Redis原理与实践浅析

【网络基础】CIsco设备基础配置

【运维安全】Clam AV——linux杀毒利器

【环境配置】Postfix2.10+ssl+dovecot搭建邮件服务器

【实践分享】Linode VPS和Vultr VPS使用体检对比

【开源技术】Jenkins系列——简介及安装

【开源技术】Jenkins系列——管理及配置

【开源技术】Jenkins系列——项目构建

【开源工具】GoAccess——Web日志分析利器

【开源技术】LVS无损硬盘替换

【运维安全】linux密钥登陆

【linux安全】linux系统之pam模块

【运维安全】SPF——防钓鱼及垃圾邮件技术详解

【开源技术】ELK实时日志分析系统搭建

【开源工具】Sersync实现数据同步

【数据库】MySQL 安全认证工具



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存